package com.ixoko.swagger.enums;

import java.util.HashMap;

/**
 * 系统错误定义
 *
 * @author wuxj
 */
public enum ErrorCode implements BaseEnum {

    S000000("操作成功"),
    E000001("服务器异常"),
    E000002("系统繁忙"),
    E000003("http请求媒体类型错误"),
    E000004("http请求body为空或参数解析错误"),
    E000005("http请求无服务"),
    E000006("暂无访问权限"),
    E000007("账号或者密码错误"),
    E000008("密码错误"),
    E000009("无操作超级管理员权限"),
    E000010("无操作超级角色权限"),
    E000011("调用第三方接口错误"),
    E000013("获取令牌参数错误"),
    E000021("令牌无效"),
    E000022("请先登录账号"),
    E000096("要修改的数据不存在"),
    E000097("用户不存在"),
    E000098("用户状态异常"),
    E000099("输入参数错误"),

    E010101("手机已注册"),
    E010102("手机未注册"),
    E010103("用户注册异常"),
    E020201("登录方式不正确"),
    E020301("密码与确认密码不符"),
    E020401("授权类型错误"),
    E020501("第三方登录信息缺失"),
    E020701("相册ID不存在"),
    E020702("相册不为空"),
    E021301("对应相册为空"),
    E021401("相片不存在"),
    E021801("显示货币余额标识不正确"),
    E021802("支付密码不正确"),
    E022001("发票配置信息不存在"),


    E030201("导游信息还在申请中"),
    E030301("导游信息未查到"),
    E030102("导游状态非申请不可修改"),
    E030103("导游信息修改失败"),
    E030401("非同一用户，不允许操作"),
    E030402("更新失败"),
    E030501("用户私人导游点赞次数更新失败"),
    E030601("导游关注数量更新失败"),
    E030701("导游分享数量更新失败"),
    E030801("导游浏览数量更新失败"),
    E030901("该用户没有申请为私人导游，请求失败"),
    E031001("没有申请为私人导游，请先申请为私人导游"),
    E031101("serviceType已经存在"),
    E031102("导游服务信息保存失败"),
    E031201("相关id不对应，删除失败"),
    E031202("导游服务信息新增删除失败"),
    E031301("没有申请为私人导游，请先申请为私人导游"),
    E031401("没有申请为私人导游，请先申请为私人导游"),
    E031402("未查询到导游车辆信息"),
    E031501("车辆carNo重复"),
    E031502("用户私人导游车辆信息保存失败"),
    E031601("相关id不对应，删除失败"),
    E031602("删除car信息失败"),
    E031701("评论数据插入失败！"),
    E031801("相关id不对应，删除失败"),
    E031802("评论数据删除失败"),
    E031901("相关id不对应，删除失败"),
    E031902("评论回复失败"),


    E050301("攻略信息插入失败"),
    E050302("攻略信息更新失败"),
    E050401("删除攻略信息失败"),
    E050501("攻略信息不存在"),
    E050502("攻略信息点赞数据更新失败"),
    E050601("攻略信息不存在"),
    E050602("攻略信息更新失败"),
    E050701("攻略信息不存在"),
    E050702("攻略关注信息更新失败"),
    E050801("攻略信息不存在"),
    E050901("评论发布失败"),


    E400001("验证码错误或已失效"),
    E400003("初始化阿里云短信异常"),
    E400004("阿里云短信发送异常"),
    E400005("阿里云短信查询异常"),

    E500001("初始化支付宝异常");


    private static HashMap<String, String> items;

    private static void putItem(ErrorCode item) {
        if (items == null) {
            items = new HashMap<>();
        }
        items.put(item.getCode(), item.getDesc());
    }

    public static String valueOfName(String name) {
        String code = name.substring(1);
        if (items.containsKey(code)) {
            return items.get(code);
        }
        return "参数超出范围";
    }

    public static boolean hasEnumName(String name) {
        String code = name.substring(1);
        return items.containsKey(code);
    }

    private String desc = null;

    ErrorCode(String desc) {
        this.desc = desc;
        putItem(this);
    }

    public String getCode() {
        return this.name().substring(1);
    }

    public String getDesc() {
        return desc;
    }

    public boolean equals(String name) {
        if (name != null && name.equals(this.name())) {
            return true;
        }
        return false;
    }
}
